Reading layer `CHILDCARE' from data source
`/Users/bryanbram/Documents/bryanbramaskara/ISSS626-GAA/hands-on-exercise/data/geospatial/ChildCareServices.kml'
using driver `KML'
Simple feature collection with 1925 features and 2 fields
Geometry type: POINT
Dimension: XYZ
Bounding box: xmin: 103.6878 ymin: 1.247759 xmax: 103.9897 ymax: 1.462134
z_range: zmin: 0 zmax: 0
Geodetic CRS: WGS 84
#| Mapping the geospatial data setstmap_mode('view')tm_shape(childcare_sf)+tm_dots()
tmap_mode('plot')#| Data Wrangling - Converting sf data frames to ppp classchildcare_ppp <-as.ppp(childcare_sf)class(childcare_ppp)
[1] "ppp"
summary(childcare_ppp)
Marked planar point pattern: 1925 points
Average intensity 2.417323e-06 points per square unit
Coordinates are given to 11 decimal places
Mark variables: Name, Description
Summary:
Name Description
Length:1925 Length:1925
Class :character Class :character
Mode :character Mode :character
Window: rectangle = [11810.03, 45404.24] x [25596.33, 49300.88] units
(33590 x 23700 units)
Window area = 796335000 square units
#| Data Wrangling - Creating owin objectsg_owin <-as.owin(mpsz_cl)class(sg_owin)
[1] "owin"
plot(sg_owin)
#| Data Wrangling - Combining point events object and owin objectchildcareSG_ppp = childcare_ppp[sg_owin]childcareSG_ppp
Marked planar point pattern: 1925 points
Mark variables: Name, Description
window: polygonal boundary
enclosing rectangle: [2667.54, 55941.94] x [21448.47, 50256.33] units
#| Clark-Evan Test for Nearest Neighbour Analysis#| Perform the Clark-Evans test without CSRclarkevans.test(childcareSG_ppp,correction="none",clipregion="sg_owin",alternative=c("clustered"))
Clark-Evans test
No edge correction
Z-test
data: childcareSG_ppp
R = 0.53532, p-value < 2.2e-16
alternative hypothesis: clustered (R < 1)
#| Perform the Clark-Evans test with CSRclarkevans.test(childcareSG_ppp,correction="none",clipregion="sg_owin",alternative=c("clustered"),method="MonteCarlo",nsim=99)
Clark-Evans test
No edge correction
Monte Carlo test based on 99 simulations of CSR with fixed n
data: childcareSG_ppp
R = 0.53532, p-value = 0.01
alternative hypothesis: clustered (R < 1)
#| Kernel Density Estimation Method#| Working with automatic bandwidth selection methodkde_SG_diggle <-density( childcareSG_ppp,sigma=bw.diggle,edge=TRUE,kernel="gaussian") plot(kde_SG_diggle)
summary(kde_SG_diggle)
real-valued pixel image
128 x 128 pixel array (ny, nx)
enclosing rectangle: [2667.538, 55941.94] x [21448.47, 50256.33] units
dimensions of each pixel: 416 x 225.0614 units
Image is defined on a subset of the rectangular grid
Subset area = 669941961.12249 square units
Subset area fraction = 0.437
Pixel values (inside window):
range = [-5.613595e-21, 3.063698e-05]
integral = 1927.788
mean = 2.877545e-06
bw <-bw.diggle(childcareSG_ppp)bw
sigma
295.9712
#| Rescalling KDE valueschildcareSG_ppp_km <-rescale.ppp( childcareSG_ppp, 1000, "km")kde_childcareSG_km <-density(childcareSG_ppp_km,sigma=bw.diggle,edge=TRUE,kernel="gaussian")plot(kde_childcareSG_km)
#| Working with different automatic badwidth methodsbw.CvL(childcareSG_ppp_km)
sigma
4.357209
bw.scott(childcareSG_ppp_km)
sigma.x sigma.y
2.159749 1.396455
bw.ppl(childcareSG_ppp_km)
sigma
0.378997
bw.diggle(childcareSG_ppp_km)
sigma
0.2959712
kde_childcareSG.ppl <-density(childcareSG_ppp_km, sigma=bw.ppl, edge=TRUE,kernel="gaussian")par(mfrow=c(1,2))plot(kde_childcareSG_km, main ="bw.diggle")plot(kde_childcareSG.ppl, main ="bw.ppl")
#| Working with different kernel methodspar(mfrow=c(2,2))plot(density(childcareSG_ppp_km, sigma=0.2959712, edge=TRUE, kernel="gaussian"), main="Gaussian")plot(density(childcareSG_ppp_km, sigma=0.2959712, edge=TRUE, kernel="epanechnikov"), main="Epanechnikov")plot(density(childcareSG_ppp_km, sigma=0.2959712, edge=TRUE, kernel="quartic"), main="Quartic")plot(density(childcareSG_ppp_km, sigma=0.2959712, edge=TRUE, kernel="disc"), main="Disc")
#| Fixed and Adaptive KDE#| Computing KDE by using fixed bandwidthkde_childcareSG_fb <-density(childcareSG_ppp_km,sigma=0.6, edge=TRUE,kernel="gaussian")plot(kde_childcareSG_fb)#| Computing KDE by using adaptive bandwidthkde_childcareSG_ab <-adaptive.density( childcareSG_ppp_km, method="kernel")plot(kde_childcareSG_ab)par(mfrow=c(1,2))
plot(kde_childcareSG_fb, main ="Fixed bandwidth")plot(kde_childcareSG_ab, main ="Adaptive bandwidth")
#| Plotting cartographic quality KDE map#| Converting gridded output into rasterkde_childcareSG_bw_terra <-rast(kde_childcareSG_km)class(kde_childcareSG_bw_terra)
[1] "SpatRaster"
attr(,"package")
[1] "terra"
kde_childcareSG_bw_terra
class : SpatRaster
size : 128, 128, 1 (nrow, ncol, nlyr)
resolution : 0.4162063, 0.2250614 (x, y)
extent : 2.667538, 55.94194, 21.44847, 50.25633 (xmin, xmax, ymin, ymax)
coord. ref. :
source(s) : memory
name : lyr.1
min value : -4.418623e-15
max value : 3.063698e+01
unit : km
#| First Order SPPA at the Planning Subzone Level#| Geospatial data wrangling#| Extracting study areapg <- mpsz_cl %>%filter(PLN_AREA_N =="PUNGGOL")tm <- mpsz_cl %>%filter(PLN_AREA_N =="TAMPINES")ck <- mpsz_cl %>%filter(PLN_AREA_N =="CHOA CHU KANG")jw <- mpsz_cl %>%filter(PLN_AREA_N =="JURONG WEST")par(mfrow=c(2,2))plot(st_geometry(pg), main ="Ponggol")plot(st_geometry(tm), main ="Tampines")plot(st_geometry(ck), main ="Choa Chu Kang")plot(st_geometry(jw), main ="Jurong West")
#| Clark and Evans Test#| Choa Chu Kang planning areaclarkevans.test(childcare_ck_ppp,correction="none",clipregion=NULL,alternative=c("two.sided"),nsim=999)
Clark-Evans test
No edge correction
Z-test
data: childcare_ck_ppp
R = 0.84097, p-value = 0.008866
alternative hypothesis: two-sided